#include "Learning.h"

// Constrói um aprendizado dando seu tipo e a taxa de aprendizado
Learning::Learning(int type, double learningRate)
{
    this->type = type;
    this->learningRate = learningRate;
}

Learning::~Learning()
{
}

// Retorna a variação do peso dado a entrada e o erro de saída
double Learning::operator()(double input, double error)
{
    double deltaW;

    switch(type)
    {
        // Supervisionado: dW = -rate * error * input
        case SUPERVISIONED:
            deltaW = -learningRate * error * input;
            break;

        default:
            deltaW = 0;
            break;
    }

    return deltaW;
}

